/*
 * @Author: zhangjingyu
 * @Date: 2020-10-10 10:50:52
 * @LastEditors: zhangjingyu
 * @LastEditTime: 2021-05-19 10:44:30
 * @FilePath: \vprisk10.14\src\api\systemManageApi.js
 * @Description: 系统管理接口api
 */
// 引入工具类
import http from './config'
import { listToTree } from '@/lib/util'

// 使用
const URL = 'api-sys/' // 公共前缀地址(网关)
// const URL = '' // 公共前缀地址(网关)
export const systemManage = {
	// 登陆后获取该用户可见模块
	queryUserModule(data) {
		return http.post(URL + 'index/queryUserModule', data)
	},
	// 获取用户菜单
	queryUserMenu(data) {
		return http.post(URL + 'index/queryUserMenu', data)
	},
	// 查询用户所拥有的租户
	queryUserTenant(data) {
		return http.post(URL + 'index/queryUserTenant', data)
	},
	// 选择或切换租户后,查询用户的所有模块
	tenantChange(data) {
		return http.post(URL + 'index/tenantChange', data)
	},
	// 切换模块
	changeModule(data) {
		return http.post(URL + 'index/changeModule', data)
	},
	// 根据编号定义,生成系统编号
	generateIdentifier(data) {
		return http.post(URL + 'sys/identifier/generateIdentifier', data)
	},


	

	//****************************************** *****************************用户管理************************************ */
	// 工程授权中的用户管理
	queryUserForPageForProject(data) {
		return http.post(URL + 'sys/user/queryUserForPageForProject', data)
	},
	// 用户管理查询
	queryUser(data) {
		return http.post(URL + 'sys/user/queryUserForPage', data)
	},
	// 用户管理保存
	saveUser(data) {
		return http.post(URL + 'sys/user/save', data)
	},
	// 用户锁定
	userLock(data) {
		return http.post(URL + 'sys/user/lockUser', data)
	},
	// 用户解锁
	userUnlock(data) {
		return http.post(URL + 'sys/user/unlockUser', data)
	},
	// 用户注销
	cancelUsing(data) {
		return http.post(URL + 'sys/user/cancelUsing', data)
	},
	// 用户管理查询右侧所有角色
	queryRoles(data) {
		return http.post(URL + 'sys/role/queryRoles', data)
	},
	// 用户管理查询右侧授权角色保存
	saveMgrRoles(data) {
		return http.post(URL + 'sys/user/saveMgrRoles', data)
	},
	// 用户名是否重复
	userNameValid(data) {
		return http.post(URL + 'sys/user/checkUserName', data,false)
	},
	// 校验密码策略
	passwardValidRule(data) {
		return http.post(URL + 'sys/passwordRule/query', data, false)
	},
	// 校验密码是否可用（是否与前面n次重复）
	passwardRepeatHis(data) {
		return http.post(URL + 'sys/user/comparePassword', data, false)
	},
	// 用户管理导入excel
	userImport(data) {
		return http.fileUpload(URL + 'sys/user/imp', data, false)
	},
	// 用户管理导出excel
	userExport(data) {
		return http.exportFile(URL + 'sys/user/exp', data, false)
	},
	// 用户管理导入用户授权角色
	userImpUserRole(data) {
		return http.fileUpload(URL + 'sys/user/impUserRole', data, false)
	},
	// 用户管理导出用户授权角色
	userExpUserRole(data) {
		return http.fileUpload(URL + 'sys/user/expUserRole', data, false)
	},
	//**********************************************************************角色管理************************************************ //
	// 角色管理查询
	roleManageQuery(data) {
		return http.post(URL + 'sys/role/asyFindRoleAndMgrRoles', data)
	},
	// 角色管理保存
	roleManageSave(data) {
		return http.post(URL + 'sys/role/save', data)
	},
	// 新增时管理角色下拉框查询
	getAllRole(data) {
		return http.post(URL + 'sys/role/initMgrRoleTree', data)
	},

	// 删除角色
	removeRole(data) {
		return http.post(URL + 'sys/role/remove', data)
	},
	// 可管理角色配置，查询右侧所有角色
	roleConfigTable(data) {
		return http.post(URL + 'sys/role/asyFindRolesOutSelf', data)
	},

	// 保存可管理角色
	saveMgrRole(data) {
		return http.post(URL + 'sys/role/saveMgr', data)
	},
	// 保存角色互斥配置
	saveRoleMutex(data) {
		return http.post(URL + 'sys/role/saveMutex', data)
	},
	// 通过角色id获取菜单
	getRoleMenu(data) {
		return http.post(URL + 'sys/role/toRight', data)
	},
	// 保存角色选中菜单
	saveRoleMenuChecked(data) {
		return http.post(URL + 'sys/role/saveRoleMenu', data)
	},
	//**********************************************************************菜单管理************************************************ //
	// 菜单管理查询
	meunManageQuery(data) {
		return http.post(URL + 'sys/menu/query', data)
	},
	// 菜单管理保存
	meunManageSave(data) {
		return http.post(URL + 'sys/menu/save', data)
	},
	// 获取modules所属模块list
	queryAllEnableModules(data) {
		return http.post(URL + 'sys/module/query', data)
	},
	queryModulesWithProjectId(data) {
		return http.post(URL + 'sys/module/queryModulesWithProjectId', data)
	},
	// 删除菜单
	meunManageRemove(data) {
		return http.post(URL + 'sys/menu/removeMenu', data)
	},
	// 移动菜单
	meunManageMoveMenu(data) {
		return http.post(URL + 'sys/menu/moveMenu', data)
	},
	//*********************************************************************机构管理************************************** */
	//获取机构树(all)
	getOrganTree(data) {
		let orgRes = []
		return http.post(URL + 'sys/organ/ogranTree', data).then((res) => {
			if (res.code == 200) {
				return (orgRes = listToTree('orgId', 'parentId', res.datas))
			} else {
				return []
			}
		})
	},
	//左侧可管理机构树(self)
	organManageTree(data) {
		return http.post(URL + 'sys/organ/organMgrTree', data)
	},
	//机构管理分页查询
	organManageQuery(data) {
		return http.post(URL + 'sys/organ/asyFindOrgans', data)
	},
	//机构管理保存
	organManageUpdate(data) {
		return http.post(URL + 'sys/organ/update', data)
	}, 
		//校验parentId
	organCheckParentId(data) {
		return http.post(URL + "sys/organ/checkParentId", data)
	},
	//机构管理启用
	organManageStart(data) {
		return http.post(URL + 'sys/organ/startStatus', data)
	},
	//机构管理停用
	organManageStop(data) {
		return http.post(URL + 'sys/organ/cancelStatus', data)
	},
	// -***************************************************************字典管理 ******************************************* */
	// 查询字典类型列表
	dictManageQuery(data) {
		return http.post(URL + 'sys/dict/dictTypePage', data,false)
	},
	// 保存字典类型
	dictSaveType(data) {
		return http.post(URL + 'sys/dict/saveType', data)
	},
	// 删除字典类型
	dictTypeDelete(data) {
		return http.post(URL + 'sys/dict/removeType', data)
	},
	// 查询字典 项
	dictItemQuery(data) {
		return http.post(URL + 'sys/dict/dictItemPage', data,false)
	},
	// 保存字典项
	dictSaveItem(data) {
		return http.post(URL + 'sys/dict/saveItem', data)
	},
	// 删除字典项
	dictItemDelete(data) {
		return http.post(URL + 'sys/dict/removeItem', data)
	},
	// 校验字典类型ID
	dictTypeCheckTypeIdUnique(data) {
		return http.post(URL + 'sys/dict/checkTypeIdUnique', data, false)
	},
	// 校验字典项ID
	dictItemCheckItemIdUnique(data) {
		return http.post(URL + 'sys/dict/checkItemIdUnique', data, false)
	},
	// -***************************************************************系统参数配置 ******************************************* */
	// 查询
	sysParamQuery(data) {
		return http.post(URL + 'sys/param/query', data)
	},
	// 保存
	sysParamSave(data) {
		return http.post(URL + 'sys/param/save', data)
	},
	// -***************************************************************密码配置 ******************************************* */
	// 密码配置查询回显
	findDefPasswordRule(data) {
		return http.post(URL + 'sys/passwordRule/findDefPasswordRule', data,false)
	},
	// 密码配置保存
	savePasswordRule(data) {
		return http.post(URL + 'sys/passwordRule/save', data)
	},
	// -***************************************************************个人信息 ******************************************* */
	// 获取当前用户个人信息
	getCurrentUserInfo(data) {
		return http.post(URL + 'sys/user/userInfo', data)
	},
	// -***************************************************************计算节点管理 ******************************************* */

	// nodeCode唯一性校验
	nodeManageValide(data) {
		return http.post(
			URL + 'sys/monitoring/calculateNode/checkNodeCodeUnique',
			data,
			false
		)
	},
	// 分页查询
	nodeManageQuery(data) {
		return http.post(URL + 'sys/monitoring/calculateNode/findAll', data)
	},
	// 节点管理保存
	nodeManageSave(data) {
		return http.post(URL + 'sys/monitoring/calculateNode/save', data)
	},
	// 节点管理删除
	nodeManageRemove(data) {
		return http.post(URL + 'sys/monitoring/calculateNode/remove', data)
	},
	// 节点管理启动
	nodeManageStart(data) {
		return http.post(URL + 'sys/monitoring/calculateNode/start', data)
	},
	// 节点管理停止
	nodeManageStop(data) {
		return http.post(URL + 'sys/monitoring/calculateNode/stop', data)
	},

	// **********************************************邮件消息****************************************************
	// webSocket
	messageSokect() {
		let base =require('../../base.config.js')
		return (
			base +'api-webSocket/'+
			'webSocketServer/'
		)
	},
	// 分页查询,全部消息,系统消息,待办任务,用户邮件,都是此接口,查询条件不同
	messageQueryForPage(data) {
		return http.post(URL + 'sys/msg/queryReceiveMsgForPage', data)
	},
	// 已发信息或已存草稿查询
	messageQuerySentedMsgForPage(data) {
		return http.post(URL + 'sys/msg/querySentedMsgForPage', data)
	},
	// 保存至草稿箱
	messageSaveToDrafts(data) {
		return http.post(URL + 'sys/msg/saveToDrafts', data)
	},
	// 保存并发送
	messageSaveAndSend(data) {
		return http.post(URL + 'sys/msg/saveAndSend', data)
	},
	// 标记已读
	messageMarkAsRead(data) {
		return http.post(URL + 'sys/msg/markAsRead', data)
	},
	// 全部标记已读
	messageMarkAsReadAll(data) {
		return http.post(URL + 'sys/msg/markAsReadAll', data)
	},
	// 删除
	messageRemove(data) {
		return http.post(URL + 'sys/msg/remove', data)
	},
	// 消息设置保存
	messageConfigSave(data) {
		return http.post(URL + 'sys/msgRemConf/save', data)
	},
	// 查询消息设置
	queryMsgRemConf(data) {
		return http.post(URL + 'sys/msgRemConf/queryMsgRemConf', data)
	},
	// **********************************************修改密码****************************************************
	// 校验新密码是否可用
	comparePassword(data) {
		return http.post(URL + 'sys/user/comparePassword', data)
	},
	// 修改当前登录用户的密码
	updatePassword(data) {
		return http.post(URL + 'sys/user/updatePassword', data)
	},
	// *********************************************工程管理***********************************************
	// 202105
	// 获取当前用户的工程列表
	getMgrProjects(data) {
		return http.post(URL + 'sys/project/getMgrProjects', data)
	},
	// 工程分页查询
	projectQuery(data) {
		return http.post(URL + 'sys/project/queryForPage', data)
	},
	// 校验工程名称是否可用
	checkProjectName(data) {
		let loading = false;
		return http.post(URL + 'sys/project/checkProjectName', data, loading)
	},
	// 保存工程
	projectSave(data) {
		return http.post(URL + 'sys/project/save', data)
	},
	// 删除工程
	projectRemove(data) {
		return http.post(URL + 'sys/project/remove', data)
	},
	// 查询所有可用工程
	// queryAllUsefulProject(data) {
	// 	return http.post(URL + 'sys/project/queryAllEnable', data)
	// },
	// 为工程授权应用模块
	projectMgrModuleCodes(data) {
		return http.post(URL + 'sys/project/mgrModuleCodes', data)
	},
	// 授权用户工程
	saveMgrProjects(data) {
		return http.post(URL + 'sys/project/saveMgrProjects', data)
	},
	// 查询该租户下的工程
	queryProjectByTenant(data) {
		return http.post(URL + 'sys/project/queryProjectBytenant', data)
	},
	// 根据用户ID获取用户的工程列表
	getProjectsByUserID(data) {
		return http.post(URL + 'sys/project/getProjectsByUserID', data)
	},
	// 根据工程Id切换工程
	changeProject(data){
		return http.post(URL + 'sys/project/changeProject', data)
	},
	// 为租户授权工程
	setTenantProject(data) {
		return http.post(URL + 'sys/project/setTenantProject', data)
	},
	// 设置用户默认工程
	setDefaultProject(data) {
		return http.post(URL + 'sys/project/setDefaultProject', data)
	},
	// 授权撤销用户工程
	grantUserProjects(data) {
		return http.post(URL + 'sys/project/grantUserProjects', data)
	},
	// **************************************************工程管理页面内数据源管理*********************************************
	// 查询该模块下还没有被其他工程使用的数据源
	dataSrcQueryDsByModuleCode(data) {
		return http.post(URL + 'sys/datasource/queryDsByModuleCode', data,false)
	},
	// 数据源分页查询
	dataSrcQueryAllDsForPage(data) {
		return http.post(URL + 'sys/datasource/queryAllDsForPage', data)
	},
	// 测试保存数据源
	dataSrcTestDs(data) {
		return http.post(URL + 'sys/datasource/testDs', data)
	},
	// 保存数据源
	dataSrcSaveDs(data) {
		return http.post(URL + 'sys/datasource/saveDs', data)
	},
	// 删除数据源
	dataSrcDelDs(data) {
		return http.post(URL + 'sys/datasource/delDs', data)
	},
	// 数据源管理-同步数据源信息
	dataSrcSyncAllDs(data) {
		return http.post(URL + 'sys/datasource/syncAllDs', data)
	},
	// 工程管理-数据源管理,测试多数据源测试方法query,指定数据源查询数据
	dataSrcTestQuery(data) {
		return http.post(URL + 'sys/datasource/testQuery', data)
	},
	// 工程管理-数据源管理,测试多数据源测试方法query1,,查询默认数据源数据
	dataSrcTestQuery1(data) {
		return http.post(URL + 'sys/datasource/testQuery1', data)
	},
	// 数据源管理-获取数据库连接url
	 getDataSourceURL(data) {
		return http.post(URL + 'sys/datasource/getDataSourceURL', data)
	},
	// 数据源管理-根据租户获取
	getDataSources(data) {
		return http.post(URL + 'sys/datasource/getDataSources', data)
	},
	// ********************************************************租户管理*********************************************
	// 校验租户名称是否可用
	checkTenantName(data) {
		return http.post(URL + 'sys/tenant/checkTenantName', data,false)
	},
	// 租户分页查询
	tenantQueryForPage(data) {
		return http.post(URL + 'sys/tenant/queryForPage', data)
	},
	// 租户管理-查询可管理的用户
	queryUserForTenant(data) {
		return http.post(URL + 'sys/tenant/queryUserForTenant', data)
	},
	// 租户管理-删除租户
	tenantRemove(data) {
		return http.post(URL + 'sys/tenant/remove', data)
	},
	// 租户管理-保存租户
	tenantSave(data) {
		return http.post(URL + 'sys/tenant/save', data)
	},
	// 租户-工程管理
	tenantTenantMgrProject(data) {
		return http.post(URL + 'sys/tenant/tenantMgrProject', data)
	},
	// 租户-用户管理
	tenantTenantMgrUser(data) {
		return http.post(URL + 'sys/tenant/tenantMgrUser', data)
	},
	// 查询该租户下的用户
	queryUserByTenant(data) {
		return http.post(URL + 'sys/tenant/queryUserByTenant', data)
	}
}
